package com.forezp.serviceribbon.service;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

/**
 * @Description TODO
 * @Author XIONGCAIZHAI
 * @Date 2019/8/21 17:18
 **/
@Service
public class HelloService{
    
    @Autowired
    RestTemplate restTemplate;
    
    @HystrixCommand(fallbackMethod = "hiError")
    public String hiService(String name){
        // SERVICE-HI 是服务名小写；
        return restTemplate.getForObject("http://SERVICE-HI/hi?name=" + name,String.class);
    }
    
    /*
     * 当 service-hi 工程不可用的时候，service-ribbon调用 service-hi的API接口时，
     * 会执行快速失败，直接返回一组字符串，而不是等待响应超时，这很好的控制了容器的线程阻塞。
     */
    public String hiError(String name){
        return "hi," + name + ",sorry,error!";
    }
}
